package uds.geoloc;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Vector;

import uds.data.POI_Database;
import uds.data.POI_Entry;
import uds.data.UserPreference;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;

// CampusActivity est l'activité qui permet de choisir un campus et de voir la liste des bâtiments s'y trouvant
public class CampusActivity extends Activity {
	
	// Initialisation des variables nécessaires
	private ListView liste_res = null ; 
	private ArrayList<POI_Entry> entries = null;
	private ArrayList<POI_Entry> batiment = null;

	private List<POI_Entry> campus = new ArrayList<POI_Entry>();
	private	List<String> idCampus = new ArrayList<String>();
    private Context context;
    private String idChoix;
    
    private POI_Database base_poi = new POI_Database(this);

    private Button bouton = null;	
    private Spinner spin ;
    
    private TextView nb_resultat ;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.campus);
        
        context = this; // Récupération du contexte
        
        // Initialisation des composants
        bouton = (Button) findViewById(R.id.buttonPlan);
        bouton.setOnClickListener(boutonListener);
        
        liste_res = (ListView) findViewById(R.id.list_res); 
        
        base_poi.open();
        
        entries = base_poi.getPOI_EntryWithType("campus"); // Récupération de la liste des campus
        
        UserPreference usr_pr = new UserPreference(this);
        
        String test = usr_pr.getPreference(UserPreference.ATR_CAMPUS_REF);
        for (POI_Entry entry : entries)
        {
        		
        		idCampus.add(entry.getName()); // Récupération du nom du campus
        }
        
        Collections.sort(idCampus);
    	base_poi.close();
    	
    	int defaut = 0;
    	
    	for(int i = 0 ; i < idCampus.size() ; i++){
    		if(idCampus.get(i).equals(test)){
    			System.out.println("Campus ref :"+idCampus.get(i));
    			defaut = i ; // Récupération de la position du campus de préférence
    		}
    	}
        // Mise en place du spinner
        spin = (Spinner) findViewById(R.id.spinnerCampus);
        ArrayAdapter<String> objetChoix = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, idCampus);
        objetChoix.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(objetChoix);
        spin.setSelection(defaut); // Sélection du campus par défaut
        
        // Implémentation du OnItemSelectedListener pour le spinner
        spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
        {
			@Override
			public void onItemSelected(AdapterView<?> l, View view, int position, long id) 
			{
		    	Vector<String> tmp = new Vector<String>();
		    	
		    	base_poi.open();
		    	
				String nomChoix = idCampus.get(position);
				
				for(POI_Entry entry : entries){
					if(entry.getName().equals(nomChoix)){
						idChoix = entry.getId(); // Récupération de l'id du campus choisi
					}
				}
		        
		        batiment = base_poi.getPOI_EntryWithType("batiment"); // Récupération de la liste de bâtiments
		        
		        for (POI_Entry entry : batiment) 
		        {
		           	if(entry.getRelated_to_poi().equals(idChoix)){
		        		tmp.add(entry.getName()); // Récupération du nom des bâtiments du campus choisi
		        	}
		        }
				// Implémentation du ListView
		        ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1,tmp);
		    	liste_res.setAdapter(adapter);
		        
		    	// Implémentation du OnItemClickListener pour le ListView
		    	liste_res.setOnItemClickListener(new OnItemClickListener() {
					
		    		@Override
		         	public void onItemClick(AdapterView<?> a, View v, int position, long id){
						base_poi.open();
		    			String tmp = (String) liste_res.getItemAtPosition(position);
						
						List<POI_Entry> tmpPOI = base_poi.getPOI_EntryWithType("batiment");
						Bundle tmpChoix = new Bundle();

						for(POI_Entry entry : tmpPOI){
							if(entry.getName().equals(tmp))
							{
								tmpChoix.putString("provenance", "Campus1"); // Spécification de la provenance
								tmpChoix.putString("id", entry.getId()); // Spécification de l'id du bâtiment choisi
							}
						}
						
			    		Intent intent = new Intent(CampusActivity.this, InfoActivity.class);
			    		
			    		intent.putExtras(tmpChoix);
			    		
			    		startActivity(intent);

						base_poi.close();
					}
		    	});
		    	
		        base_poi.close();
			}

			@Override
			public void onNothingSelected(AdapterView<?> l) 
			{
				
			}
         });
        
    }

    private OnClickListener boutonListener = new OnClickListener() 
    {
       	@Override
       	public void onClick(View v) 
       	{
       		Intent intent = new Intent(CampusActivity.this, PlanActivity.class);
       		String tmp = new String();
       		Bundle extra = new Bundle();
   
       		for(POI_Entry entry : entries)
       		{
				if(entry.getName().equals(spin.getSelectedItem()))
				{
					tmp = entry.getId(); // Stockage de l'id du campus choisi
				}
			}
       		
       		extra.putString("provenance", "Campus2"); // Spécification de la provenance
       		extra.putString("id", tmp); // Spécification de l'id du campus choisi
        		
       		intent.putExtras(extra);
        		
       		startActivity(intent);
       	}
        }; 

}
